/*
 * @文件描述:ADC驱动程序
 * @版本:
 * @作者:周晨阳
 * @Date:2021-10-11 19:34:33
 */
#include "ADC.h"
#include "DSP.h"
#include <math.h>
#if BOARD_INUSE == WIN32
//a1-a5分别对应为PF6-10，a6为PC0,hand为PC1
u8 sensorMap[7] = {MY_ADC_CHANNEL_4, MY_ADC_CHANNEL_5, MY_ADC_CHANNEL_6, MY_ADC_CHANNEL_7, MY_ADC_CHANNEL_8, MY_ADC_CHANNEL_10, MY_ADC_CHANNEL_11};

//========================================================================
// 函数: void   ADC_Inilize(ADC_InitTypeDef *ADCx)
// 描述: ADC初始化程序.
// 参数: ADCx: 结构参数,请参考adc.h里的定义.
// 返回: none.
// 版本: V1.0, 2012-10-22
//========================================================================
void ADC_Inilize(u8 channel, u32 freq)
{
}
//========================================================================
// 函数: void   ADC_PowerControl(u8 pwr)
// 描述: ADC电源控制程序.
// 参数: pwr: 电源控制,ENABLE或DISABLE.
// 返回: none.
// 版本: V1.0, 2012-10-22
//========================================================================
void ADC_PowerControl(u8 pwr)
{
    if (pwr == ENABLE)
    {
    }
    else
    {
    }
}
//========================================================================
// 函数: u16    Get_ADC_Result(u8 channel)
// 描述: 查询法读一次ADC结果.
// 参数: channel: 选择要转换的ADC.
// 返回: 12位ADC结果.
// 版本: V1.0, 2012-10-22
//========================================================================
u16 Get_ADC_Result(u8 channel) //
{
}

//保存所有传感器的上一个数据
static u16 lastValue[8] = {0};
//所有传感器的限幅滤波阈值
static u8 ThresholdList[8] = {30, 30, 30, 30, 30, 30, 30, 30};

/**
 * @brief :获取角度传感器的ADC初始值
 * @param {u8} angle 角度传感器ID
 * @return {*}
 */
u16 Get_ADC_ResultByAngle(u8 angle) //
{
    return 100;
}
/**
 * @brief :获取ADC电压值，单位mv，测量范围0-3.3v
 * @param {u8} channel ：ADC channel
 * @return {*}
 */
float getInputVoltage(u8 channel)
{
    return Get_ADC_Result(channel) * 3300.0f / 4096.0f;
}
/**
 * @brief :直接获取角度传感器的电压 ，单位mv，测量范围0-3.3v
 * @param {u8} angle 角度传感器id
 * @return {*}
 */
float getInputVoltageByAngle(u8 angle)
{
    return Get_ADC_ResultByAngle(angle) * 3300.0f / 4096.0f;
}
/**
 * @brief :角度ID到ADC 频道的转换
 * @param {u8} angle
 * @return {*}
 */
u8 angle2ADCMap(u8 angle)
{
    return sensorMap[angle];
}
/**
 * @brief :设置传感器的限幅滤波值
 * @param {u8} id
 * @param {u8} threshold
 * @return {*}
 */
void setSensorThreshold(u8 id, u8 threshold)
{
    ThresholdList[id] = threshold;
}
#endif
